Growth in color management has resulted in an increase in software packages that are used to generate International Color Consortium (ICC) profiles. ICC profiles describe color attributes of a particular device or viewing requirement by defining mappings between a device color space and device independent color space. Typically, profiles created by a standard organization, e.g., International Organization for Standardization (ISO) are selected as printer input profiles when printing cyan, magenta, yellow, black (CMYK) print jobs.
Color management typically performs a multi-dimensional interpolation of an input color within a high-dimensional Look Up Table (LUT). In commercial and transactional printers it is common to apply a Preserve-Black (Preserve-K) transformation to colors in order to produce more desirable color output. Most commonly this transformation is used for gray text, where it is desired to preserve the “grayness” through color management and not introduce non-gray values into the output. Additionally, ink/toner usage can be minimized through this transformation because true grays can be produced through the K channel alone, with no C, M, or Y ink/toner being used.
The transformation effectively maps input colors with an equal magnitude of each constituent color component into a single gray/black output color component. For example an RGB value with r=g=b color components would be mapped to an output CMYK color of c=m=y=0, k′. Likewise, an input CMYK value of c=m=y, k=0 or C=M=Y=0, k′ would be mapped to c=m=y=0, k′. This transformation is performed to insure that colors that represent a true gray/black are preserved as an equally true gray/black even after any other color management is applied.
A common method for obtaining Preserve-K colors is to modify the LUT from which all colors are interpolated. Essentially, all LUT nodes matching the input criteria for a Preserve-K color are manually modified to insure that the output color is K-only, regardless of the original output color values in the LUT. For example, an RGB LUT would have all of its nodes with input color (x, x, x) mapped to an output CMYK color of (0, 0, 0, k′). The value of k′ is dependent on the input color space itself and various formulas/expressions may be used.
While this design provides a fast/efficient solution to the Preserve-K problem, it can lead to color artifacts and the contamination of colors. Modifications to the LUT can produce far-reaching color changes in the areas near the modified nodes. Colors that are themselves not actually Preserve-K may be heavily influenced by a nearby Preserve-K color. Alternatively, true Preserve-K colors may still not be obtained in all cases (namely for RGB input spaces) because the K-axis is not a principal component of the color space.
Accordingly, a mechanism to perform Preserve-X transformations is desired.